import Vue from 'vue'
import Vuex from 'vuex'
import { Message } from 'element-ui'
Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    activePath: {},// 当前处于活跃状态的
    tabPathList: [], // tab栏数组
    indexPath: [],  // 首页快捷方式
    resetLoginVisible: false, // 超时重新登录对话框
    maxHeight: window.innerHeight,
    isChecked: false,
    searchItem: {},
    isPlay: true,
  },
  mutations: {
    changeIsPlay(state, item) {
      console.log(item);
      state.isPlay = item
    },
    getMaxHeight(state, item) {
      state.maxHeight = item
    },
    // 工具点击tab的不同来修改当前 【 处于活跃状态 】 的页面
    eidtActionPath(state, item) {
      //console.log(item);
      if (state.tabPathList.length < 12) {
        // 添加页面
        if (!item.data) {              // 加个时间标识
          item.data = new Date().getTime()
        }
        state.activePath = item;
      }
      // 跳转到原有页面
      else {
        let items = state.tabPathList.find(e => {
          return e == item;
        })
        if (items != undefined)
          state.activePath = items;
      }
    },
    // 【 往tab数组里push数据 】
    pushTabPathList(state, item) {
      if (state.tabPathList.length < 20) {
        if (!item.data) {               // 加个时间标识
          item.data = new Date().getTime()
        }
        state.tabPathList.push(item)
        console.log(state.tabPathList.length);
      } else {
        Message({
          message: "抱歉！最多只能打开20个窗口",
          type: 'error'
        })
      }
    },
    // 往tab数据里面删除splice数据
    spliceTabPathList(state, index) {
      state.tabPathList.splice(index, 1);
    },
    clearTabPathList(state, index) {
      state.tabPathList.splice(index);
    },
    // 注销的时候清除vuex的tab
    loginOut(state) {
      state.activePath = {};// 当前处于活跃状态的
      state.tabPathList = state.tabPathList.slice(0, 2);
    },
    bujianChange(state, item) {
      state.searchItem = item
    }
  },
  getters: {
    // 查找tabPathList里面是否存在【某个元素】
    tabPathListFindIndex(state) {
      return function (item1) {
        return state.tabPathList.findIndex(item => item == item1)
      }
    },
    tabPathListFindIndexID(state) {
      return function (id) {
        return state.tabPathList.findIndex(item => item.id == id)
      }
    }
  }
})

export default store